#include "../include/head.h"
// 定义全局变量
int globalLogin = 0;
void scanf_pass(int i);
void change_pass();
void change_pass_old(int i);
// 注册
void register_user()
{
    char username[20];
    printf("请输入用户名(仅限字母或数字,长度小于20)\n");
    scanf("%s", username);
    for (int i = 0; i < sizeof(*userArr) / sizeof(userData); i++)
    {
        if (strcmp(username, userArr[i].userName) == 0)
        {
            printf("用户名已存在\n");
            register_user();
            return;
        }
    }
    char pass[20];
    printf("请输入密码(仅限字母或数字,长度小于20)\n");
    scanf(" %s", pass);
    write_user_data(username, pass);
    read_user_data();
    login();
}

void login()
{
    char *menu[] = {
        "欢迎使用便利店管理系统",
        "1.登录",
        "2.注册",
        "3.修改密码",
        "4.退出"};
    print_border();
    for (int i = 0; i < sizeof(menu) / sizeof(menu[0]); i++)
    {
        printf("* %-*s   \n", 46, menu[i]);
    }
    print_border();
    char type[10];
    scanf("%s", type);
    if (!strcmp(type, "1"))
    {
        printf("您选择了账号密码登录\n");
        char username[20];
        printf("请输入用户名\n");
        scanf("%s", username);
        int flag = 0;
        int i;
        for (i = 0; i < userNum; i++)
        {
            if (strcmp(username, userArr[i].userName) == 0)
            {
                flag = 1;
                break;
            }
        }
        if (flag)
        {
            scanf_pass(i);
        }
        else
        {
            printf("用户名不存在，请重新登录或注册！\n");
            login();
            return;
        }
    }
    else if (!strcmp(type, "2"))
    {
        printf("您选择了账号注册\n");
        register_user();
    }
    else if (!strcmp(type, "3"))
    {
        printf("您选择了修改密码\n");
        change_pass();
        read_user_data();
    }
}
void change_pass_old(int i)
{
    char pass[20];
    printf("请输入原密码\n");
    scanf(" %s", pass);
    if (strcmp(pass, userArr[i].pass) == 0)
    {
        char newPass[20];
        char newPass2[20];
        printf("请输入新密码\n");
        scanf(" %s", newPass);
        printf("请再次输入新密码\n");
        scanf(" %s", newPass2);
        if (strcmp(newPass2, newPass) == 0)
        {
            strcpy(userArr[i].pass, newPass2);
            write_user_pass();
            printf("修改密码成功！\n");
            printf("1.返回上一层菜单\n");
            char a;
            scanf(" %c", &a);
            switch (a)
            {
            case '1':
                login();
                break;

            default:
                break;
            }
        }
        else
        {
            printf("两次密码不一致！\n");
            change_pass_old(i);
        }
    }
    else
    {
        printf("原密码错误\n");
        change_pass_old(i);
        return;
    }
}
void change_pass()
{
    char username[20];
    printf("请输入需要修改密码的用户名\n");
    scanf("%s", username);
    int flag = 0;
    int i;
    for (i = 0; i < userNum; i++)
    {
        if (strcmp(username, userArr[i].userName) == 0)
        {
            flag = 1;
            break;
        }
    }
    if (flag)
    {
        change_pass_old(i);
    }
    else
    {
        printf("用户名不存在，请重新登录或注册！\n");
        login();
        return;
    }
}
void scanf_pass(int i)
{
    char pass[20];
    printf("请输入密码\n");
    scanf(" %s", pass);
    if (strcmp(pass, userArr[i].pass) == 0)
    {
        home_hint(L);
    }
    else
    {
        printf("密码错误\n");
        scanf_pass(i);
        return;
    }
}

void main(int argc, char const *argv[])
{
    L = createList();
    // 读取用户列表，放入数组中
    read_user_data();
    // 先读取商品文件的数据放入链表中
    read_data(L);
    // login();
    home_hint(L);
}
